prompt 住院通用接口发票信息获取:SP_ZY_TYJK_FPXXHQ create or replace procedure SP_ZY_TYJK_FPXXHQ( PJKRZID in varchar2 ,--入参:接口日志ID=BM_JKRZ00.JKRZID PJKLXBM in varchar2 ,--入参:接口类型编码:YLmachine:自助机 YLwebservice:服务 TYJKwebservice:通用接口服务 PZDBH00 in varchar2 ,--入参:终端编码 PFUNCBM in varchar2 ,--入参:请求方法(编码) PFUNCMC in varchar2 ,--入参:请求方法(名称) PJKQQLX in varchar2 ,--入参:接口类型(HL7、XML) PJKQQCS in varchar2 ,--入参:接口请求参数 PINXML1 in varchar2 ,--入参:备用参数01 PINXML2 in varchar2 ,--入参:备用参数02 PINXML3 in varchar2 ,--入参:备用参数03 PZXZT00 out varchar2 ,--出参:返还状态 1:成功 0:失败 PJKFHLX out varchar2 ,--出参:接口返回类型 1:直接返回报文 8:BM_JKRZ00.QQCLOB 9: BM_JKRZ00.FHCLOB PRECNUM out varchar2 ,--出参:返回记录数据 PJKFHCS out varchar2 ,--出参:接口返回参数 PERRMSG out varchar2 --出参:错误信息,NULL表示正确 ) as -- MODIFICATION HISTORY -- Person Date Comments -- zhangyc 2021.12.13 Create by [V9.0]通用接口 住院通用接口发票信息获取:SP_ZY_TYJK_FPXXHQ -- zhangyc 2023.10.30 增加解析xtgzh0节点 -- --------- ---------- --------------------- LS_ZXZT00 BM_JKRZ00.ZXZT00%type;--执行状态 1:成功 0:失败 LS_COUNT0 number(12,2); --临时变量 LS_LengNum number(12,2); --临时变量 LS_MSGSTR varchar2(100); --错误位置信息 LS_CZRQ00 char(8); --操作日期 LS_CZSJ00 char(8); --操作时间 LS_MAXNUM number(12); --最大长度 LS_XMLSTR varchar2(4000); --xml字符 LS_SQLSTR varchar2(4000);--Sql字符 LS_YNYGBH BM_TYCJMX.YNYGBH%type;--院内员工编码=bm_ygbm00.ygbh00 LS_SFQY00 BM_TYCJMX.SFQY00%type;--是否启用:1启用,0关闭 LS_HISKEY BM_TYCJMX.HISKEY%type;--接口请求HISKEY LS_JKYXRQ BM_TYCJMX.JKYXRQ%type;--接口有效日期(格式:yyyymmdd) LS_JKLXBH BM_ZFRZ00.JKLXBH%type;--接口类型编号 LS_JKLXMC BM_ZFRZ00.JKLXMC%type;--接口类型名称 LS_ZYGHID BM_ZFRZ00.ZYGHID%type;--住院(ZYID00)或门诊(GHID000)流水号 LS_ZYHGHH BM_ZFRZ00.ZYHGHH%type;--住院(ZYH000)或门诊(GHH000)号 LS_ZXZTBZ BM_ZFRZ00.ZXZTBZ%type;--状态标志 0:失败 1:成功 LS_TYJE00 BM_ZFRZ00.TYJE00%type;--停用金额 LS_MZZYBZ BM_ZFRZ00.MZZYBZ%type;--门诊住院表 0:门诊 1:住院 LS_JKFHCS BM_JKRZ00.JKFHCS%type;--返回参数值 LS_FHRQ00 BM_JKRZ00.FHRQ00%type;--返回操作日期 LS_FHSJ00 BM_JKRZ00.FHSJ00%type;--返回操作时间 LS_JKCODE BM_JKRZ00.JKCODE%type;--接口返回码 LS_JKFHLX BM_JKRZ00.JKFHLX%type;--接口返回类型 1:直接返回报文 2:中间表取值BM_JKRZMX 3:其它表取值 8:取QQCLOB LS_CJLYBM BM_JKRZ00.CJLYBM%type;--厂家来源编码 LS_QDCJBM BM_JKRZ00.QDCJBM%type;--渠道编码 LS_QQCLOB BM_JKRZ00.QQCLOB%type;--请求报文CLOB类型 LS_FHCLOB BM_JKRZ00.FHCLOB%type;--返回报文CLOB类型 LS_CYZ000 number(5);--员工编码 LS_BRID00 number(10);--病人ID LS_ZYID00 number(10);--住院id LS_DJH000 number(10);--单据号 LS_JZDH00 number(10);--结账单号 LS_BRZHYE number(12,2);--病人账户总额 LS_DDLSH0 varchar2(30);--订单流水号 LS_invoicetype varchar2(10);--invoicetype:发票格式类型:0:普通发票 1:单病种发票 2:cdrg发票 LS_fpxh00 varchar2(30);--fpxh00:发票序号 --请求参数 in_cjlybm varchar2(10);--cjlybm:厂家来源编码 in_qdcjbm varchar2(10);--qdcjbm:渠道编码 in_zdbh00 varchar2(20);--zdbh00:终端编号 in_czy000 varchar2(20);--czy000:操作员编码 in_zyh000 varchar2(20);--zyh000:住院号 in_brid00 varchar2(20);--brid00:病人id in_zyid00 varchar2(20);--zyid00:住院id in_jzdh00 varchar2(20);--jzdh00:结账单号 in_xtgzh0 varchar2(30);--xtgzh0:系统跟踪号 in_dzpjcj varchar2(10);--dzpjcj 电子票据厂家 BS:博思等 RYGBM BM_YGBM00%rowtype; --员工信息 RBRXX BM_BRXXB0%rowtype; --病人信息 LS_ZXData BM_JKRZ00.FHCLOB%type;--主项记录数据集 LS_MXData BM_JKRZ00.FHCLOB%type;--明细记录数据集 LS_dzpjjkbw BM_JKRZ00.FHCLOB%type;--电子票据请求报文 LS_ZXNum number(10);--主项记录数 LS_MXNum number(10);--明细记录数 cursor CUR_Data is select a.* from VW_ZY_FPXX00 a where 1=1 and a.ZYID00=LS_ZYID00 and a.JZDH00=LS_JZDH00 ; cursor CUR_MX is select a.* from ZY_JZMX00 a where 1=1 and a.JZDH00=LS_JZDH00 ; begin LS_MsgStr:='变量初始化赋值'; LS_ZXZT00:='0';--执行状态 1:成功 0:失败 PZXZT00:='0';--出参:返还状态 1:成功 0:失败 PJKFHLX:='1';--出参:接口返回类型 1:直接返回报文 8:BM_JKRZ00.QQCLOB 9: BM_JKRZ00.FHCLOB PRECNUM:='0';--出参:返回记录数据 PJKFHCS:='';--出参:接口返回参数 PERRMSG:='';--出参:错误信息,NULL表示正确 LS_CZRQ00:=to_char(sysdate,'YYYYMMDD'); LS_CZSJ00:=to_char(sysdate,'HH24:MI:SS'); LS_COUNT0:=0;--临时变量 LS_LengNum:=0; --临时变量 LS_MAXNUM:=4000;--最大长度 LS_XMLSTR:=''; --xml字符 LS_CYZ000:=0;--员工编码 LS_BRID00:=0;--病人ID LS_DJH000:=0;--单据号 LS_QQCLOB:=null;--请求报文CLOB类型 LS_FHCLOB:=null;--返回报文CLOB类型 LS_MZZYBZ:='1';--门诊住院表 0:门诊 1:住院 LS_ZXData:=null;--主项记录数据集 LS_MXData:=null;--明细记录数据集 LS_dzpjjkbw:=null;--电子票据请求报文 LS_ZXNum:=0;--主项记录数 LS_MXNum:=0;--记录数 LS_JKFHCS:=null;--返回参数值 --步骤1:解析请求入参数 LS_MsgStr:='步骤1:解析请求入参数'; in_cjlybm:=trim(substrb(SF_XT_GETXMLSTR('cjlybm',PJKQQCS),1,10));--cjlybm:厂家来源编码 YH:易惠 YX:医信 YL:医联 in_qdcjbm:=trim(substrb(SF_XT_GETXMLSTR('qdcjbm',PJKQQCS),1,10));--qdcjbm:渠道编码 1:自助机,2:收费窗口,3:移动结算,4:多点结算 5:互联网结算 6:微信公众号 7:支付宝小程序 in_zdbh00:=trim(substrb(SF_XT_GETXMLSTR('zdbh00',PJKQQCS),1,20));--zdbh00:终端编号 in_czy000:=trim(substrb(SF_XT_GETXMLSTR('czy000',PJKQQCS),1,20));--czy000:操作员编码 in_zyh000:=trim(substrb(SF_XT_GETXMLSTR('zyh000',PJKQQCS),1,20));--zyh000:住院号 in_brid00:=trim(substrb(SF_XT_GETXMLSTR('brid00',PJKQQCS),1,20));--brid00:病人id in_zyid00:=trim(substrb(SF_XT_GETXMLSTR('zyid00',PJKQQCS),1,20));--zyid00:住院id in_jzdh00:=trim(substrb(SF_XT_GETXMLSTR('jzdh00',PJKQQCS),1,20));--jzdh00:结账单号 in_xtgzh0:=trim(substrb(SF_XT_GETXMLSTR('xtgzh0',PJKQQCS),1,30));--xtgzh0:系统跟踪号 in_dzpjcj:=trim(substrb(SF_XT_GETXMLSTR('dzpjcj',PJKQQCS),1,10));--dzpjcj 电子票据厂家 BS:博思等 in_dzpjcj:=nvl(in_dzpjcj,'BS'); --步骤3:数据校验 LS_MsgStr:='步骤3:数据校验'; if in_zdbh00 is null and (in_czy000 is null or in_czy000 in ('0')) then PZXZT00:='0';--[出参]:执行状态 0:失败 1:成功 PERRMSG:='请求报文中节点(zdbh00:终端编号、czy000:操作员编码)不能同时为空!'; return; end if; if in_zyh000 is null and (in_zyid00 is null or in_zyid00 in ('0')) then PZXZT00:='0';--出参:返还状态 1:成功 0:失败 PERRMSG:='请求报文中[zyh000:住院号、zyid00:住院id]节点值不能同时为空!';--出参:错误信息,NULL表示正确 return; end if; if (in_jzdh00 is null or in_jzdh00 in ('0')) and in_xtgzh0 is null then PZXZT00:='0';--出参:返还状态 1:成功 0:失败 PERRMSG:='请求报文中[jzdh00:结账单号、xtgzh0:系统跟踪号]节点值不能同时为空!';--出参:错误信息,NULL表示正确 return; end if; ---获取通用场景明细BM_TYCJMX参数 LS_MsgStr:='获取通用场景明细BM_TYCJMX参数'; select count(1) into LS_COUNT0 from BM_TYCJMX where CJBM00=PFUNCBM and CJLYBM=nvl(in_cjlybm,'TY') and QDCJBM=nvl(in_qdcjbm,'TY'); begin if nvl(LS_COUNT0,0)>0 then select YNYGBH,SFQY00,HISKEY,JKYXRQ into LS_YNYGBH,LS_SFQY00,LS_HISKEY,LS_JKYXRQ from BM_TYCJMX where CJBM00=PFUNCBM and CJLYBM=nvl(in_cjlybm,'TY') and QDCJBM=nvl(in_qdcjbm,'TY'); else select YNYGBH,SFQY00,HISKEY,JKYXRQ into LS_YNYGBH,LS_SFQY00,LS_HISKEY,LS_JKYXRQ from BM_TYCJMX where CJBM00=PFUNCBM and CJLYBM='TY' and QDCJBM='TY'; end if; exception when others then LS_YNYGBH:=null;--院内员工编码=bm_ygbm00.ygbh00 LS_SFQY00:=null;--是否启用:1启用,0关闭 LS_HISKEY:=null;--接口请求HISKEY LS_JKYXRQ:=null;--接口有效日期(格式:yyyymmdd) end; --校验是否开启以及有效时间 if LS_SFQY00 not in ('1') and LS_SFQY00 is not null then PZXZT00:='0';--出参:返还状态 1:成功 0:失败 PERRMSG:='接口编码:['||PFUNCBM||']接口名称:['||PFUNCMC||'],未开启,请联系管理员!';--错误信息 return; end if; if LS_JKYXRQ is not null and LS_CZRQ00>LS_JKYXRQ then PZXZT00:='0';--出参:返还状态 1:成功 0:失败 PERRMSG:='接口编码:['||PFUNCBM||']接口名称:['||PFUNCMC||'],已过期,有效期:['||LS_JKYXRQ||'],请联系管理员!';--出参:错误信息,NULL表示正确 return; end if; begin LS_CYZ000:=to_number(nvl(in_czy000,0));--员工编码 exception when others then LS_CYZ000:=0; end; begin LS_BRID00:=to_number(nvl(in_BRID00,0));--病人ID exception when others then LS_BRID00:=0;--病人ID end; begin LS_ZYID00:=to_number(nvl(in_ZYID00,0));--住院id exception when others then LS_ZYID00:=0;--住院id end; begin LS_JZDH00:=to_number(nvl(in_JZDH00,0));--结账单号 exception when others then LS_JZDH00:=0;--结账单号 end; if nvl(LS_JZDH00,0)=0 and in_xtgzh0 is not null then begin select BRID00,ZYID00,JZDH00 into LS_BRID00,LS_ZYID00,LS_JZDH00 from SST_JSDP_JBXX_LOG where XTGZH0 =in_xtgzh0; exception when no_data_found then LS_JZDH00:=0; end; end if; if nvl(LS_JZDH00,0)>0 then begin select BRID00,ZYID00,JZDH00 into LS_BRID00,LS_ZYID00,LS_JZDH00 from ZY_JZB000 where JZDH00= LS_JZDH00; exception when no_data_found then LS_BRID00:=0; LS_ZYID00:=0; LS_JZDH00:=0; end; end if; --获取操作员 if nvl(LS_CYZ000,0)=0 and in_zdbh00 is not null then begin select YGBH00 into LS_CYZ000 from VW_SST_YGBMDYXX where ZZJBH0=in_zdbh00; exception when others then LS_CYZ000:=0; end; end if; if nvl(LS_CYZ000,0)=0 and nvl(LS_YNYGBH,0) not in (0) then LS_CYZ000:=nvl(LS_YNYGBH,0); end if; --步骤5:基本信息字典 LS_MsgStr:='步骤4:基本信息字典'; if nvl(LS_CYZ000,0)>0 then begin select * into RYGBM from BM_YGBM00 aa where YGBH00 =LS_CYZ000; exception when others then PZXZT00:='0';--[出参]:执行状态 0:失败 1:成功 PERRMSG:='未找到有效的员工信息!YGBH00='||LS_CYZ000; return; end; end if; if nvl(LS_JZDH00,0)=0 then PZXZT00:='0';--出参:返还状态 1:成功 0:失败 PERRMSG:='接口请求失败,错误原因:HIS内部结账单号为0!';--出参:错误信息,NULL表示正确 return; end if; --获取发票信息(视图:vw_zy_fpxx00) LS_invoicetype:='0';--发票格式类型:0:普通发票 1:单病种发票 2:cdrg发票 ls_fpxh00:=SF_ZY_GETPJXH(RYGBM.YGBH00,3,RYGBM.BMBH00);--fpxh00:发票序号 for REC in CUR_Data loop if REC.ffbzbm is not null then LS_invoicetype:='1';--发票格式类型:0:普通发票 1:单病种发票 2:cdrg发票 else if REC.ybsm10 is not null then LS_invoicetype:='2';--发票格式类型:0:普通发票 1:单病种发票 2:cdrg发票 end if; end if; LS_ZXData:=null;--记录数据集 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('invoicetype',LS_invoicetype,0,0,null,null);--invoicetype:发票格式类型:0:普通发票 1:单病种发票 2:cdrg发票 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('fpxh00',ls_fpxh00,0,0,null,null);--fpxh00:发票序号 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('xm0000',REC.xm0000,0,0,null,null);--xm0000 姓名 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('xb0000',REC.xb0000,0,0,null,null);--xb0000 性别 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('rycwh0',REC.rycwh0,0,0,null,null);--rycwh0 床位号 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('zyh000',REC.zyh000,0,0,null,null);--zyh000 住院号 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('brid00',REC.brid00,0,0,null,null);--brid00 病人id LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('zyid00',REC.zyid00,0,0,null,null);--zyid00 住院id LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('ybkh00',REC.ybkh00,0,0,null,null);--ybkh00 医保卡号 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('ybid00',REC.ybid00,0,0,null,null);--ybid00 医保ID LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('dqbq00',REC.dqbq00,0,0,null,null);--dqbq00 当前病区编码 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('dqbqmc',REC.dqbqmc,0,0,null,null);--dqbqmc 当前病区名称 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('dqks00',REC.dqks00,0,0,null,null);--dqks00 当前科室编码 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('dqksmc',REC.dqksmc,0,0,null,null);--dqksmc 当前科室名称 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('ryrq00',REC.ryrq00,0,0,null,null);--ryrq00 入院日期 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('cydjrq',REC.cydjrq,0,0,null,null);--cydjrq 出院登记日期 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('cyrq00',REC.cyrq00,0,0,null,null);--cyrq00 出院日期 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('zyts00',REC.zyts00,0,0,null,null);--zyts00 住院天数 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('dbzbm0',REC.ffbzbm,0,0,null,null);--dbzbm0 单病种编码 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('dbzmc0',REC.ffbzmc,0,0,null,null);--dbzmc0 单病种名称 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('ybzyh0',REC.ybzyh0,0,0,null,null);--ybzyh0 医保住院号 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('ybdjh0',REC.ybdjh0,0,0,null,null);--ybdjh0 医保收费单据号 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('fbxx00',REC.fbxx00,0,0,null,null);--fbxx00 费别信息 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('hjje00',REC.hjje00,0,0,null,null);--hjje00 费用总额 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('zfje00',REC.zfje00,0,0,null,null);--zfje00 自付金额 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('jzje00',REC.jzje00,0,0,null,null);--jzje00 记账金额 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('gfje00',REC.gfje00,0,0,null,null);--gfje00 公费金额 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('jmje00',REC.jmje00,0,0,null,null);--jmje00 优惠金额 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('grzhzf',REC.grzhzf,0,0,null,null);--grzhzf 医保账户支付 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('tcjjzf',REC.tcjjzf,0,0,null,null);--tcjjzf 统筹基金支付 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('gwybz0',REC.gwybz0,0,0,null,null);--gwybz0 公务员补助 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('sbtcjj',REC.sbtcjj,0,0,null,null);--sbtcjj 商保统筹基金 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('mzbzje',REC.mzbzje,0,0,null,null);--mzbzje 民政补助金额 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('ybzhye',REC.ybzhye,0,0,null,null);--ybzhye 医保账户余额 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('yyzfje',REC.yyzfje,0,0,null,null);--yyzfje 医院支付金额 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('jsbllx',REC.ybsm10,0,0,null,null);--jsbllx CDRG病例类型=YBSM10 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('jsblmc',REC.jsblmc,0,0,null,null);--jsblmc C-DRG结算病历类型名称 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('yszje0',REC.yszje0,0,0,null,null);--yszje0 预交金总额(现金) LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('zzzje0',REC.zzzje0,0,0,null,null);--zzzje0 预交金总额(转账) LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('cyysk0',REC.cyysk0,0,0,null,null);--cyysk0 出院应收款 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('cyytk0',REC.cyytk0,0,0,null,null);--cyytk0 出院应退款 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('xjye00',REC.xjye00,0,0,null,null);--xjye00 现金余额 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('zzye00',REC.zzye00,0,0,null,null);--zzye00 转账余额 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('xjtkje',REC.xjtkje,0,0,null,null);--xjtkje 现金退款金额 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('zztkje',REC.zztkje,0,0,null,null);--zztkje 转账退款金额 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('xjbjje',REC.xjbjje,0,0,null,null);--xjbjje 现金补交金额 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('zzbjje',REC.zzbjje,0,0,null,null);--zzbjje 转账补交金额 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('yhtkje',REC.yhtkje,0,0,null,null);--yhtkje 银行退款金额 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('wxtk00',REC.wxtk00,0,0,null,null);--wxtk00 微信退款金额 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('zfbtk0',REC.zfbtk0,0,0,null,null);--zfbtk0 支付宝退款金额 LS_ZXData:=LS_ZXData||SF_XT_XMLJSON('ybqtex',REC.ybqtex,0,0,null,null);--ybqtex 医保其他支付(扩展显示) LS_ZXNum:=nvl(LS_ZXNum,0)+1; if LS_invoicetype='1' then--发票格式类型:0:普通发票 1:单病种发票 2:cdrg发票 --发票项目类别 90:[医保返回]单病种超标床位费 91:[医保返回]单病种除外耗材 92:[医保返回]单病种标准 LS_MXData:=LS_MXData||''; LS_MXData:=LS_MXData||SF_XT_XMLJSON('fpbh00','92',0,0,null,null);--fpbh00 发票编码 LS_MXData:=LS_MXData||SF_XT_XMLJSON('fpmc00','单病种标准',0,0,null,null);--fpmc00 发票名称 LS_MXData:=LS_MXData||SF_XT_XMLJSON('fphjje',REC.YBYL04,0,0,null,null);--fphjje 发票合计金额 LS_MXData:=LS_MXData||''; LS_MXData:=LS_MXData||''; LS_MXData:=LS_MXData||SF_XT_XMLJSON('fpbh00','91',0,0,null,null);--fpbh00 发票编码 LS_MXData:=LS_MXData||SF_XT_XMLJSON('fpmc00','单病种除外耗材',0,0,null,null);--fpmc00 发票名称 LS_MXData:=LS_MXData||SF_XT_XMLJSON('fphjje',REC.YBYL34,0,0,null,null);--fphjje 发票合计金额 LS_MXData:=LS_MXData||''; LS_MXData:=LS_MXData||''; LS_MXData:=LS_MXData||SF_XT_XMLJSON('fpbh00','90',0,0,null,null);--fpbh00 发票编码 LS_MXData:=LS_MXData||SF_XT_XMLJSON('fpmc00','单病种超标床位费',0,0,null,null);--fpmc00 发票名称 LS_MXData:=LS_MXData||SF_XT_XMLJSON('fphjje',REC.YBYL33,0,0,null,null);--fphjje 发票合计金额 LS_MXData:=LS_MXData||''; else for MX in CUR_MX loop LS_MXData:=LS_MXData||''; LS_MXData:=LS_MXData||SF_XT_XMLJSON('fpbh00',lpad(MX.XMBH00,2,'0'),0,0,null,null);--fpbh00 发票编码 LS_MXData:=LS_MXData||SF_XT_XMLJSON('fpmc00',MX.XMMC00,0,0,null,null);--fpmc00 发票名称 LS_MXData:=LS_MXData||SF_XT_XMLJSON('fphjje',MX.XMJE00,0,0,null,null);--fphjje 发票合计金额 LS_MXData:=LS_MXData||''; LS_MXNum:=nvl(LS_MXNum,0)+1; end loop; end if; --电子票据请求报文调用his提供web服务 电子票据请求报文 --ZYSF_DZFP_0001BS34051384676325101 --9999管理员管理员1057217901_632510HIS9 LS_dzpjjkbw:=LS_dzpjjkbw||''; LS_dzpjjkbw:=LS_dzpjjkbw||''; LS_dzpjjkbw:=LS_dzpjjkbw||SF_XT_XMLJSON('eventid','ZYSF_DZFP_0001',0,0,null,null);--eventid LS_dzpjjkbw:=LS_dzpjjkbw||SF_XT_XMLJSON('cjlybm','BS',0,0,null,null);--cjlybm LS_dzpjjkbw:=LS_dzpjjkbw||SF_XT_XMLJSON('zyid00',REC.ZYID00,0,0,null,null);--zyid00 LS_dzpjjkbw:=LS_dzpjjkbw||SF_XT_XMLJSON('jzdh00',REC.JZDH00,0,0,null,null);--jzdh00 LS_dzpjjkbw:=LS_dzpjjkbw||SF_XT_XMLJSON('pjh000',REC.PJH000,0,0,null,null);--pjh000 LS_dzpjjkbw:=LS_dzpjjkbw||SF_XT_XMLJSON('bustype','01',0,0,null,null);--bustype LS_dzpjjkbw:=LS_dzpjjkbw||SF_XT_XMLJSON('placecode',RYGBM.XKH000,0,0,null,null);--placecode LS_dzpjjkbw:=LS_dzpjjkbw||SF_XT_XMLJSON('payee',RYGBM.ZWXM00,0,0,null,null);--payee LS_dzpjjkbw:=LS_dzpjjkbw||SF_XT_XMLJSON('author',RYGBM.ZWXM00,0,0,null,null);--author LS_dzpjjkbw:=LS_dzpjjkbw||SF_XT_XMLJSON('pzdyyg',RYGBM.YGBH00,0,0,null,null);--pzdyyg LS_dzpjjkbw:=LS_dzpjjkbw||SF_XT_XMLJSON('czyks0',RYGBM.BMBH00,0,0,null,null);--czyks0 LS_dzpjjkbw:=LS_dzpjjkbw||SF_XT_XMLJSON('busno','01_'||REC.PJH000,0,0,null,null);--busno LS_dzpjjkbw:=LS_dzpjjkbw||SF_XT_XMLJSON('print','0',0,0,null,null);--print LS_dzpjjkbw:=LS_dzpjjkbw||SF_XT_XMLJSON('dyly00','DD',0,0,null,null);--dyly00 LS_dzpjjkbw:=LS_dzpjjkbw||SF_XT_XMLJSON('ywhdbz','1',0,0,null,null);--ywhdbz 是否回调 1是0否 LS_dzpjjkbw:=LS_dzpjjkbw||''; LS_dzpjjkbw:=LS_dzpjjkbw||''; end loop; if nvl(LS_ZXNum,0)=0 then PZXZT00:='0';--[出参]:执行状态 0:失败 1:成功 PERRMSG:='未找到有效发票信息的记录!'; return; end if; LS_FHCLOB:=''||LS_ZXData||LS_dzpjjkbw||LS_MXData||''; --返回报文CLOB类型 LS_ZXZT00:='1';--执行状态 1:成功 0:失败 LS_ZXNum:=1;--记录数据 LS_FHRQ00:=to_char(sysdate,'YYYYMMDD');--返回操作日期 LS_FHSJ00:=to_char(sysdate,'HH24:MI:SS');--返回操作时间 LS_JKFHLX:='9';--接口返回类型 1:直接返回报文 8:BM_JKRZ00.QQCLOB 9: BM_JKRZ00.FHCLOB LS_JKCODE:='successful';--接口返回码(错误:failure 成功:successful) --步骤9:修改中间表BM_JKRZ00 LS_MsgStr:='步骤9:修改中间表BM_JKRZ00'; update BM_JKRZ00 set ZXZT00=LS_ZXZT00, --状态标志 0:失败 1:成功 MZZYBZ=LS_MZZYBZ, --门诊住院标志 0:门诊 1:住院 BRID00=LS_BRID00, --病人ID DJH000=LS_DJH000, --单据号 CZY000=RYGBM.YGBH00,--操作员编码 CZYXM0=RYGBM.ZWXM00,--操作员姓名 DDLSH0=LS_DDLSH0,--订单流水号 CJLYBM=IN_CJLYBM, --厂家来源编码 QDCJBM=IN_QDCJBM, --渠道编码 FHRQ00=LS_FHRQ00, --返回操作日期 FHSJ00=LS_FHSJ00, --返回操作时间 JKFHLX=LS_JKFHLX, --接口返回类型 1:直接返回报文 8:BM_JKRZ00.QQCLOB 9: BM_JKRZ00.FHCLOB JKCODE=LS_JKCODE, --接口返回码(错误:failure 成功:successful) JKFHCS=LS_JKFHCS, --返回参数值 FHCLOB=LS_FHCLOB --返回报文CLOB类型 where JKRZID=PJKRZID; --步骤10:过程出参赋值 LS_MsgStr:='步骤10:过程出参赋值'; PZXZT00:=LS_ZXZT00;--出参:返还状态 1:成功 0:失败 PRECNUM:=LS_ZXNum;--出参:返回记录数据 PJKFHLX:=LS_JKFHLX;--出参:接口返回类型 1:直接返回报文 8:BM_JKRZ00.QQCLOB 9: BM_JKRZ00.FHCLOB PJKFHCS:=LS_JKFHCS;--出参:接口返回参数 exception when no_data_found then PERRMSG:=substr('住院通用接口发票信息获取失败!'||'错误位置:['||LS_MSGSTR||'] 错误原因:'||sqlerrm,1,250); PZXZT00:='0';--出参:返还状态 1:成功 0:失败 rollback; when others then PERRMSG:=substr('住院通用接口发票信息获取失败!'||'错误位置:['||LS_MSGSTR||'] 错误原因:'||sqlerrm,1,250); PZXZT00:='0';--出参:返还状态 1:成功 0:失败 rollback; end; / show error; --%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%